"""
Iterable: 可迭代，可以使用for循环，内部实现了__iter__方法
Iterator: 迭代器，可以使用for循环，也可以使用next取值, 内部实现了__iter__, __next__方法
Generator: 节省内存，惰性求值
"""
from collections.abc import Iterable, Iterator, Generator

l0 = [1, 3, 5]
print(isinstance(l0, Iterable), isinstance(l0, Iterator), isinstance(l0, Generator))

# iter函数可以将可迭代对象转迭代器
l0_iter = iter(l0)
print(isinstance(l0_iter, Iterable), isinstance(l0_iter, Iterator), isinstance(l0_iter, Generator))

g0 = (i for i in range(10))
print(isinstance(g0, Iterable), isinstance(g0, Iterator), isinstance(g0, Generator))


print("================")
class MyClass:
	def __iter__(self):
		"""
		实现__iter__ 方法变为可迭代
		:return:
		"""
		return self

	def __next__(self):
		"""
		实现__next__ 方法变为迭代器
		:return:
		"""
		return 0



mc = MyClass()
print(isinstance(mc, Iterable), isinstance(mc, Iterator), isinstance(mc, Generator))
